home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / MOSSUPPO.I < prev    next >
Encoding:
Modula Implementation  |  1992-02-14  |  1.1 KB  |  56 lines

  1. IMPLEMENTATION MODULE MOSSupport;
  2. (*$Y+,N+,L-*)
  3.  
  4. (*
  5.   14.02.92 TT: CallSuper, ToSuper, ToUser neu.
  6. *)
  7.  
  8. FROM SYSTEM IMPORT ASSEMBLER;
  9.  
  10. PROCEDURE ToSuper;
  11.   BEGIN
  12.     ASSEMBLER
  13.         MOVEQ   #1,D0
  14.         MOVE.L  D0,-(A7)
  15.         MOVE    #$20,-(A7)
  16.         TRAP    #1              ; Super (1)
  17.         MOVE.W  D0,4(A7)
  18.         ADDQ.L  #1,D0
  19.         BEQ     alreadySuper
  20.         TRAP    #1              ; Super (0)
  21.      alreadySuper:
  22.         ADDQ.L  #6,A7
  23.         MOVE.L  D0,4(A7)        ; save SSP
  24.     END
  25.   END ToSuper;
  26.  
  27. PROCEDURE ToUser;
  28.   BEGIN
  29.     ASSEMBLER
  30.         MOVE.L  4(A7),D0
  31.         BEQ     wasSuper
  32.         MOVE.L  D0,-(A7)
  33.         MOVE    #$20,-(A7)
  34.         TRAP    #1              ; Super (SSP)
  35.         ADDQ.L  #6,A7
  36.       wasSuper
  37.     END
  38.   END ToUser;
  39.  
  40. PROCEDURE CallSuper;
  41.   BEGIN
  42.     ASSEMBLER
  43.         ; swap rtn-/proc-addr
  44.         SUBQ.L  #4,A7
  45.         JSR     ToSuper
  46.         MOVE.L  8(A7),A0
  47.         JSR     (A0)
  48.         MOVE.L  D0,8(A7)
  49.         JSR     ToUser
  50.         MOVE.L  8(A7),D0
  51.         ADDQ.L  #4,A7
  52.     END
  53.   END CallSuper;
  54.  
  55. END MOSSupport.
  56.